#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024 ArchR (https://github.com/archr-linux/Arch-R)

# Minimal OS variable loading for performance
. /etc/profile.d/001-functions

LED_PATH="/sys/class/leds"

function led_brightness() {
  echo ${2} >${LED_PATH}/${1}/brightness
}

function led_rgb() {
  echo ${2} ${3} ${4} >${LED_PATH}/${1}/multi_intensity
}

function led_off() {
  led_brightness power-led 0
  led_rgb power-led 0 0 0
  /usr/bin/analog_sticks_ledcontrol 0 0 0 0
}

function led_red() {
  led_brightness power-led 255
  led_rgb power-led 255 0 0
  /usr/bin/analog_sticks_ledcontrol 255 255 0 0
}

function led_green() {
  led_brightness power-led 255
  led_rgb power-led 0 255 0
  /usr/bin/analog_sticks_ledcontrol 255 0 255 0
}

function led_blue() {
  led_brightness power-led 255
  led_rgb power-led 0 0 255
  /usr/bin/analog_sticks_ledcontrol 255 0 0 255
}

function led_white() {
  led_brightness power-led 255
  led_rgb power-led 255 255 255
  /usr/bin/analog_sticks_ledcontrol 255 255 255 255
}

function led_orange() {
  led_brightness power-led 255
  led_rgb power-led 255 20 0
  /usr/bin/analog_sticks_ledcontrol 255 255 20 0
}

function led_yellow() {
  led_brightness power-led 255
  led_rgb power-led 255 125 0
  /usr/bin/analog_sticks_ledcontrol 255 255 125 0
}

function led_purple() {
  led_brightness power-led 255
  led_rgb power-led 255 0 255
  /usr/bin/analog_sticks_ledcontrol 255 255 0 255
}

case ${1} in
  red)
    led_red
    set_setting led.color ${1}
  ;;
  green)
    led_green
    set_setting led.color ${1}
  ;;
  blue)
    led_blue
    set_setting led.color ${1}
  ;;
  white)
    led_white
    set_setting led.color ${1}
  ;;
  orange)
    led_orange
    set_setting led.color ${1}
  ;;
  yellow)
    led_yellow
    set_setting led.color ${1}
  ;;
  purple)
    led_purple
    set_setting led.color ${1}
  ;;
  off)
    led_off
    set_setting led.color ${1}
  ;;
  rgb)
    LEDS_CONFIG=$(get_setting analogsticks.led)
    /usr/bin/analog_sticks_ledcontrol ${LEDS_CONFIG}
    set_setting led.color ${1}
  ;;
  battery)
    led_off
    set_setting led.color ${1}
    systemctl restart batteryledstatus.service
  ;;
  poweroff)
    led_off
  ;;
  list)
cat <<EOF
off
battery
red
green
blue
white
orange
yellow
purple
EOF
  ;;
esac

